package com.example.cardgame.model

class Card(
    private var suit: String,
    private var rank: String,
    var isChosen: Boolean = false,
    var isMatched: Boolean = false
) {
    companion object {
        val rankStrings = arrayOf("A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K")
        val validSuits = arrayOf("♥", "♦", "♠", "♣")
    }

    override fun toString(): String {
        return suit + rank
    }

    /**
     * 任意数量卡片的匹配逻辑：
     * @param otherCards 参与匹配的其他卡片（不包含当前卡片）
     * @return 匹配分数（>0表示匹配成功）
     * 规则：所有卡片（当前卡片+otherCards）满足以下任一条件则匹配：
     * 1. 所有点数（rank）相同 → 高分
     * 2. 所有花色（suit）相同 → 中等分
     */
    fun match(otherCards: List<Card>): Int {
        // 合并当前卡片和其他卡片，组成完整的待匹配列表
        val allCards = mutableListOf<Card>(this) + otherCards
        if (allCards.size < 2) return 0 // 至少需要2张卡片才能匹配

        // 检查所有卡片点数是否相同
        val allSameRank = allCards.all { it.rank == this.rank }
        // 检查所有卡片花色是否相同
        val allSameSuit = allCards.all { it.suit == this.suit }

        return when {
            allSameRank -> 5 * allCards.size // 点数相同：分数随张数增加（示例规则）
            allSameSuit -> 2 * allCards.size // 花色相同：分数随张数增加（示例规则）
            else -> 0 // 不匹配
        }
    }
}